﻿using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;

namespace ControleRepresentante.Logic.Models
{
    public class Fabrica : UsuariosHolder
    {
        private readonly IList<Pedido> m_Pedidos;

        public Fabrica()
        {
            m_Pedidos = new List<Pedido>();
        }

        [Required(ErrorMessage = "*")]
        public virtual string Nome { get; set; }
        public virtual string CNPJ { get; set; }
        public virtual string InscricaoEstadual { get; set; }
        public virtual IEnumerable<Pedido> Pedidos { get { return m_Pedidos; } }
        public virtual FabricaJolitex FabricaJolitex { get; protected set; }
        public virtual FabricaTrivium FabricaTrivium { get; protected set; }

        public virtual void SetFabricaJolitex()
        {
            FabricaJolitex = new FabricaJolitex(this);
        }

        public virtual void SetFabricaTrivium()
        {
            FabricaTrivium = new FabricaTrivium(this);
        }
    }

    public class FabricaJolitex : ModelBase
    {
        internal FabricaJolitex(Fabrica fabrica)
        {
            Fabrica = fabrica;
        }

        protected FabricaJolitex()
        {
        }

        public virtual bool IsJolitex { get; set; }
        protected virtual internal Fabrica Fabrica { get; protected set; }

        public override Guid Id
        {
            get { return Fabrica.Id; }
            set { }
        }
    }

    public class FabricaTrivium : ModelBase
    {
        internal FabricaTrivium(Fabrica fabrica)
        {
            Fabrica = fabrica;
        }

        protected FabricaTrivium()
        {
        }

        public virtual bool IsTrivium { get; set; }
        protected virtual internal Fabrica Fabrica { get; protected set; }

        public override Guid Id
        {
            get { return Fabrica.Id; }
            set { }
        }
    }
}
